This invention relates to bar code readers, and more particularly to a reader using electrical scanning of a bit-mapped image of a bar code symbol in a memory array.
Hand-held bar code scanners are disclosed in U.S. Pat. Nos. 4,387,297, 4,409,470 and 4,760,248, all assigned to Symbol Technologies, Inc. These bar code readers are gun-shaped units aimed by the user toward the symbol to be read. A light beam, usually generated by a laser diode in contemporary units, is mechanically scanned across the field of view by an oscillating mirror, for example. The reflected light is detected to produce electrical signals which are then processed to recognize the bar code. These types of scanners are used for reading conventional one-dimensional bar codes, two commonly-used types of these being referred to as UPC (Universal Product Code) and Code-39.
Hand-held scanners are distinguished from stationary bar code readers, one type of which is disclosed in U.S. Pat. No. 4,369,361, also assigned to Symbol Technologies, Inc. Stationary readers, of the type shown in U.S. Pat. No. 4,369,361, or of the type often seen in supermarket checkout counters, rely upon the operator to manually place the product bearing the symbol into a fixed field of view of the reader. In contrast, a hand-held scanner operates on the principle that the user aims the device at the symbol so that the line of scan will be at the proper angle to traverse the bar code symbol. In a typical hand-held reader, the scan or movement is generated by scanning the laser beam (or alternatively by mechanically scanning the detector, or both) along a single line in an operator-selected field of view. Stationary scanners instead rely upon mechanical scanning of the light beam across a fixed field of view at a number of different scan lines or angles to pick up bar codes at various positions.
In either hand-held or stationary scanners, with the scan being generated by mechanically oscillating or moving a light source or a mirror, the direction of each scan is fixed relative to the reader housing. If there is only one scan line, and the bar code symbol is located at an angle to this linear scan of the laser beam, then the user of a hand-held unit must twist the unit to align it with the angle of the bar code. Or, the operator of a stationary unit must twist the product to retry, hoping to align the symbol with one of the several scan lines. When a hand-held reader unit is being used at a retail check-out counter, the objects having bar codes to be read will be randomly oriented, and the items will be of many different sizes and shapes. Properly positioning the hand-held reader unit for reading bar codes thus becomes an awkward task. On the other hand, stationary-type scanners generating several scan paths at angles to one another still often require the operator to try several passes of the product until a valid read is obtained. Multiple-scan readers are not only mechanically complex and expensive, with a large number of moving parts, but even so still produce only a few fixed paths for scan lines, and if none of the paths are correct the operator must make additional passes until a code-recognition signal is produced.
In order to provide more information in the bar code symbols, and to allow the symbols to be smaller or more compactly shaped, new bar code standards have been adopted. One of these new code standards, Code-49, uses a more complex but efficient character set, and also introduces a two-dimensional feature so more data is contained in the symbol; this is accomplished by stacking rows of characters vertically instead of extending the bars horizontally. That is, there may be two or more rows of bars, up to eight, instead of only one row. A bar code of the Code-49 type having a number of rows of coded information is disclosed in U.S. Pat. No. 4,794,239, issued Dec. 27, 1988. A one-dimensional single-line scan, as ordinarily the case for hand-held readers, where the laser beam is swept back and forth across a narrow arc, has disadvantages in reading these two dimensional bar codes; that is, the reader must be aimed at each row, individually. Likewise, the stationary multiple-scan-line readers produce a number of scan lines at an angle to one another so these are not suitable for recognizing Code-49 type of two-dimensional symbols.
In copending application Ser. No. 944,848, filed Dec. 22, 1986 now U.S. Pat. No. 4,816,661, assigned to the assignee hereof, a hand-held laser scanner for reading bar codes is disclosed that generates a scan pattern of mutually parallel lines extending linearly across each symbol; the scan lines sweep in opposite directions and are vertically spaced from one another. If a symbol is backwards or upside down, this scanning method facilitates obtaining a valid decode.
It is therefore a principal object of this invention to provide an improved bar code reader adapted for electrical scanning rather than mechanical scanning, particularly a reader which recognizes bar code symbols at various angular positions within the field of view of the reader. Another object is to provide an improved bar code reader adapted for recognizing two-dimensional symbols, e.g., symbols having two or more rows of bars. A further object is to provide an improved bar code reader adapted for recognizing symbols at random or arbitrary orientation in the field of view of the reader, e.g., recognizing symbols having rows of bars and spaces at an angle to the nominal axis of the scanning line of the reader unit. It is another object to provide a bar code reader for which physical alignment of the reader with the orientation of the bar code symbol is less critical, and the alignment of the scan with the symbol is accomplished electrically rather than by the operator or by product positioning. An additional object is to provide a bar code scanner which does not need to employ mechanical scanning of the symbols. Also, it is an object to provide a method of scanning bar codes or the like which is faster and more reliable. It is also an object of the invention to provide an improved method of rotating the image of a bar code symbol stored in a memory or detected by a light-responsive array in reading two-dimensional bar codes.